In architectures of hybrid peer-to-peer (P2P)/Content Delivery Network (CDN) type, peers cooperation (using P2P) is used in order to minimize the load over the CDN. Each peer tries to download data from other peers and relies on the CDN only if the data cannot be found among the peers it is connected to. For the peer-to-peer mechanism to be efficient, data persistence must be ensured although peers join and leave the network frequently. Typically, a peer joins the network when a user requests to watch the video, remains in the network while downloading and playing the video and finally, soon after having played the whole video, it leaves the network and stops serving data.
The present invention particularly concerns VoD (Video on Demand) which differs from a pure download and from streaming. Indeed, with VoD, the whole file is available somewhere while it is played and every peer starts to play the video at a different time and therefore is interested in different blocks of the file. It obviously differs from streaming where content is generated on the fly and where all peers are interested in the same blocks at the same time. VoD also differs from pure file download as content blocks need to be downloaded so that the video can be played while download is still in progress. However, a P2P system needs randomness among content blocks download in order to be efficient and every efficient download protocol downloads files out-of-order in order to ensure that every chunk is replicated an equal number of time and can be served efficiently. Therefore, while a VoD download protocol is based on in-order download, for efficiency's sake it is clear that it may also benefit from so called “out-of-order” download.
As peer-to-peer systems are open systems where each peer plays an important role in the system, they are subject to selfish and malicious behaviors where peers do not cooperate as specified but try to maximize their own interest. In the current VoD case, a peer may try to download all the content in order to minimize the chance that it misses a block. However, selfish behavior hurts the global performance as if every peer is selfish and downloads in order; the P2P system will not ensure data persistence for the last blocks of the video.
In order to prevent selfish behaviors, P2P protocols are enhanced with incentive mechanisms that ensure that peers have to behave as predicted. Otherwise, their performance would be reduced. One of the most known incentives is Bittorrent's “tit for tat” that is intended at ensuring that every peer contributes to the system. In the present invention, the inventors have designed an incentive that ensures that every peer dedicates a part of its bandwidth to out-of-order download while keeping a sufficient effort on in-order download. This is some kind of trade-off between global efficiency of the whole P2P system and local quality of service for all peers.
FIG. 1 shows a peer-to-peer network comprising eight peers connected to a CDN (Content Delivery Network).
P2P (peer-to-peer) goals and VoD (Video on Demand) goals are somehow orthogonal. In a P2P system, one wants peers to download data randomly (out-of-order) to ensure that each chunk is available on an equal number of peers. The out-of-order download helps to ensure persistence of data even in highly dynamic environments. Therefore, the whole system benefits from out-of-order download. However, peers playing a video downloaded by P2P VoD want to download the video blocks in order. They need data to be available on time. In order to reduce the risk of missing deadlines, the best strategy is to download data in order: the peer downloads first the data it needs first. Therefore, individually, each peer benefits from in-order download.
The conflict between global and individual interest hurts persistence of data, especially for the last blocks. Indeed, peers only serve last blocks for a very short time. Peers tend to leave the application once they have played the video and just after having downloaded the last blocks. Therefore, the CDN (Content Delivery Network) will permanently need to re-inject the last blocks in the system as peers cannot help each other for the last few blocks.
Peer-to-peer systems are generally open and subject to arbitrary behavior. Therefore, solutions that can be bypassed by modification of the local behavior are not acceptable. The present invention offers a solution that can enforce peers to use their spare bandwidth to download content out of order. The goal is to ensure that a peer's individual interest is not opposed to the system's global interest.
Although there are currently no known solutions to the above-mentioned problem, there are solutions to similar problems where a peer wants to ensure that another peer owns some data before delivering a service.
The solution generally proposed involves cryptographic challenges and require cryptography to be deployed and the protocol to be made more complex to handle such challenges. Moreover, the deployment of cryptography in distributed systems requires a central trusted authority for managing and delivering keys. Unfortunately, such solutions are weakened by the fact that the central trusted authority quickly becomes a bottleneck in P2P systems.
Other solutions involve a form of auditing where a third party requests the data to the peer being audited and sends the result to the auditing peer. However, to prevent any form of cheating, this strategy requires complex protocols and use of cryptography with the same problems as in the previous case.